package com.it.regexdemo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo7 {
    public static void main(String[] args) {
        /*
        有如下文本，请按照要求爬取数据。
        Java自从95年问世以来，经历了很多版本，目前企业中用的最多的是java8和java11，因为这两个是长期支持版本，下一个长期支持版本是java17，相信在未来不久java17也会逐渐登上历史舞台

        需求1：爬取版本号为8,11,17的java文本，但是只要java，不显示版本号。
        需求2：爬取版本号为8,11,17的java文本。正确爬取结果为：java8 java11 java17 java17
        需求3：爬取除了版本号为8,11,17的java文本，
         */

        String s = "java自成立以来，经历了很多版本，目前企业中用的最多的是java8和java11，" +
                "因为这两个是长期支持版本，下一个长期支持版本是java17，相信在未来不久java17也会逐渐登上历史舞台";

        //需求1：
        String regex1 = "java(?=8|11|17)";
        //?相当于指代Java,=相当于拼接的意思
        //但是在获取的时候，只能获取前半部分
        //需求2：
        String regex2 = "((?i)java)(8|11|17)";
        String regex3 = "((?i)java)(?:8|11|17)";
        //?i忽略大小写
        //需求3：
        String regex4 = "((?i)java)(?!8|11|17)";
        Pattern p = Pattern.compile(regex4);
        //创建了一个Pattern对象，它是正则表达式的编译形式
        //Pattern.compile()方法接受一个字符串参数，该参数是要编译的正则表达式。
        Matcher m = p.matcher(s);
        //这行代码创建了一个Matcher对象，它用于对指定的输入字符串进行正则表达式匹配操作。
        while (m.find()) {
            System.out.println(m.group());
        }
    }
}
